package com.expert.miniapp.dto;

import lombok.Data;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import java.io.Serializable;

/**
 * 科技成果DTO类
 * 对应数据库表：tech_achievement
 */
@Data
public class TechAchievementDTO implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * 成果唯一标识（主键）
     */
    @NotBlank(message = "成果ID不能为空")
    @Size(max = 20, message = "成果ID长度不能超过20个字符")
    private String achievementId;
    
    /**
     * 成果名称
     */
    @Size(max = 100, message = "成果名称长度不能超过100个字符")
    private String name;
    
    /**
     * 应用场景
     */
    private String applicationScenarios;
    
    /**
     * 详细信息
     */
    private String details;
    
    /**
     * 商业模式
     */
    private String businessModel;
    
    /**
     * 核心竞争力
     */
    private String coreCompetitiveness;
    
    /**
     * 技术特点
     */
    private String technicalFeatures;
    
    /**
     * 其他信息
     */
    private String otherInfo;
    
    /**
     * 分类标签
     */
    @Size(max = 50, message = "分类标签长度不能超过50个字符")
    private String categories;
    
    /**
     * 标签
     */
    @Size(max = 50, message = "标签长度不能超过50个字符")
    private String tags;
    
    /**
     * 所属机构
     */
    @Size(max = 60, message = "所属机构长度不能超过60个字符")
    private String organization;

    /**
     * 城市
     */
    @Size(max = 50, message = "城市长度不能超过50个字符")
    private String city;

    /**
     * 摘要
     */
    @Size(max = 200, message = "摘要长度不能超过200个字符")
    private String summary;
    
    /**
     * 显示权重
     */
    private Integer displayWeight;
    
    /**
     * 图片URL
     */
    @Size(max = 500, message = "图片URL长度不能超过500个字符")
    private String imageUrl;
}